Tech

Diary

Lecture

About Me

개발중

프로세스와 쓰레드

JeongSeulho

2025년 01월 03일

준비중...
클립보드로 복사

프로세스의 메모리 구조

  • 코드 영역 : 실행할 프로그램의 코드가 저장
  • 데이터 영역 : 전역 변수, 정적 변수
  • 힙 영역 : 런타임에 필요시 동적으로 할당되는 부분
  • 스택 영역 : 함수 관련한 정보(지역변수, 매개변수, 리턴값, 함수 종료 후 돌아갈 주소)

멀티 프로그래밍과 멀티 프로세싱

  • 멀티 프로그래밍 : 메모리에 여러 프로세스를 동시에 올림
  • 멀티 프로세싱 : CPU가 시분할하여 여러 프로세스를 동시에 실행

PCB(Process Control Block)

  • 프로세스의 정보를 저장하는 블록(운영체제 입장에서의 프로세스 그 자체)
  • 프로세스 생성시 PCB 생성, 프로세스 종료 시 PCB 제거
  • 각 PCB는 연결리스트 구조로 커널의 메모리에 저장되어 있음(커널만 사용가능한 특수한 메모리 공간)

프로세스 상태

  • PCB에 저장되는 프로세스 상태
  • CPU의 시분할 처리를 위한 정보

image

  • 상태 종류
    • new : 메모리에 프로그램 적재를 요청
    • ready : 승인 이후 CPU 할당을 기다리는 상태
    • ready => running으로 넘어가기 위한 다양한 우선순위 및 방법들이 CPU 스케줄링
    • running : CPU를 할당받아 실행 중인 상태, 부여된 시간만큼 실행, 시간 이후 ready 상태로 전환
    • waiting : 입출력 등의 이벤트 발생을 기다리는 상태
    • terminated : 프로세스 실행 종료

컨텍스트 스위칭

  • 실행할 프로세스를 전환하는 작업
  • 기존에 작업하던 프로세스의 내용(CPU의 레지스터 값 등)을 PCB에 저장하고, 다음 프로세스의 내용을 PCB에서 읽어 CPU 레지스터에 저장하며 전환

부모, 자식 프로세스

  • 여러 프로세스는 기본적으로 트리구조를 가짐
  • 부팅시 생성되는 최초의 프로세스가 존재(system, init 등 OS마다 다름)
  • 이후 생성되는 프로세스는 이미 존재하는 프로세스를 복사하여 일부 변경함, 이때 부모-자식 관계가 생성

image

  • 자식 프로세스는 종료시 부모 프로세스에게 종료를 알림(부모 프로세스가 먼저 죽어 자식 프로세스가 남아 있는 경우 좀비 프로세스가 됨)

쓰레드

  • 너무 많은 프로세스 생성으로 인한 오버헤드를 줄이기 위해 등장
    • 메모리 공간
    • 컨텍스트 스위칭
    • 프로세스간 통신(IPC)
  • 쓰레드는 한 프로세스의 PCB, 코드, 데이터, 힙 영역을 공유하며 스택 영역만 따로 가짐
  • 데이터를 공유하므로 안정성은 떨어짐
  • 각 쓰레드의 TCB(Thread Control Block)가 존재